type op =
	 Plus|Minus|Times|Divide
	|Gt|Gteq|Lt|Lteq|Eq|Neq
	|And|Or

type expr =
	  Int of int
	| String of string
	| Bool of string
	| Name of string
	| Assign of string * expr
	| Binop of expr * op * expr
	| Not of expr

type operation = 
	  Expr of expr
	| Block of operation list
	| Condition of expr * operation * operation
	| While of expr * operation
	| Break
	| Continue
	| Return of expr

type func_decl = {
	rettype : string;
        fname : string;
        parameters: (string * string) list;
        fields: (string * string) list;
        fbody: operation list;
}

type parse =  (string * string) list * func_decl list

